﻿using System;
using System.Windows.Forms;
using System.Data;
using Gencode.PrsCommon.Data.Anstellung;

namespace Gencode.PrsUtil.Controls
{
	public class PUAnstellungComboBox : ComboBox
	{
		DataView m_anstellungen;
		string m_mandid;

		public PUAnstellungComboBox()
			: base()
		{
		}

		protected override void InitLayout()
		{
			base.InitLayout();
		}

		public void InitData(string mandid)
		{
			m_mandid = mandid;
			RefreshData();
		}

		public void RefreshData()
		{
			m_anstellungen = AnstellungData.GetAnstellungen(m_mandid, true);
			DataSource = m_anstellungen;
			DisplayMember = "name";
		}

		protected override void Dispose(bool disposing)
		{
			if (m_anstellungen != null)
				m_anstellungen.Dispose();
			base.Dispose(disposing);
		}

		public string SelectedAnstellungName
		{
			get
			{
				if (SelectedIndex >= 0)
					if (m_anstellungen[SelectedIndex].Row["anstellungid"].ToString() != null &&
						m_anstellungen[SelectedIndex].Row["anstellungid"].ToString() != string.Empty)
						return AnstellungData.GetName(int.Parse(m_anstellungen[SelectedIndex].Row["anstellungid"].ToString()));
				
				return string.Empty;
			}
		}

		public string SelectedAnstellungLangtext
		{
			get
			{
				if (SelectedIndex >= 0)
					if (m_anstellungen[SelectedIndex].Row["anstellungid"].ToString() != null &&
						   m_anstellungen[SelectedIndex].Row["anstellungid"].ToString() != string.Empty)
						return AnstellungData.GetLangtext(int.Parse(m_anstellungen[SelectedIndex].Row["anstellungid"].ToString()));

				return string.Empty;
			}
		}

		public int SelectedAnstellungPrioritaet
		{
			get
			{
				if (SelectedIndex >= 0)
					if (m_anstellungen[SelectedIndex].Row["anstellungid"].ToString() != null &&
						m_anstellungen[SelectedIndex].Row["anstellungid"].ToString() != string.Empty)
						return AnstellungData.GetPrioritaet(int.Parse(m_anstellungen[SelectedIndex].Row["anstellungid"].ToString()));

				return 0;
			}
		}

		public int SelectedAnstellungEinsatzProTag
		{
			get
			{
				if (SelectedIndex >= 0)
					if (m_anstellungen[SelectedIndex].Row["anstellungid"].ToString() != null &&
						m_anstellungen[SelectedIndex].Row["anstellungid"].ToString() != string.Empty)
						return AnstellungData.GetEinsatzProTag(int.Parse(m_anstellungen[SelectedIndex].Row["anstellungid"].ToString()));

				return 0;
			}
		}

		public int SelectedAnstellungID
		{
			get
			{
				if (SelectedIndex >= 0)
					if (m_anstellungen[SelectedIndex].Row["anstellungid"].ToString() != null &&
						m_anstellungen[SelectedIndex].Row["anstellungid"].ToString() != string.Empty)
						return int.Parse(m_anstellungen[SelectedIndex].Row["anstellungid"].ToString());

				return 0;
			}
		}

		public bool SelectedAnstellungGerechnet
		{
			get
			{
				if (SelectedIndex >= 0)
					if (m_anstellungen[SelectedIndex].Row["anstellungid"].ToString() != null &&
						m_anstellungen[SelectedIndex].Row["anstellungid"].ToString() != string.Empty)
						return AnstellungData.GetGerechnet(int.Parse(m_anstellungen[SelectedIndex].Row["anstellungid"].ToString()));

				return false;
			}
		}

		public bool SelectedAnstellungAusgelernt
		{
			get
			{
				if (SelectedIndex >= 0)
					if (m_anstellungen[SelectedIndex].Row["ausgelernt"].ToString() != null &&
						m_anstellungen[SelectedIndex].Row["ausgelernt"].ToString() != string.Empty)
					{
						if (m_anstellungen[SelectedIndex].Row["ausgelernt"].ToString() == "1")
							return true;
						else
							return false;
					}

				return false;
			}
		}

		public string Mandid
		{
			private get
			{
				return m_mandid;
			}
			set
			{
				m_mandid = value;
			}
		}

		/// <summary>
		/// Sets the Index to the given Anstellung
		/// </summary>
		/// <param name="anstellungid">anstellungid</param>
		public void SetIndexAt(int anstellungid)
		{
			for (int i = 0; i < m_anstellungen.Count; i++)
			{
				if(m_anstellungen[i].Row["anstellungid"].ToString() != string.Empty)
					if (int.Parse(m_anstellungen[i].Row["anstellungid"].ToString()) == anstellungid)
					{
						SelectedIndex = i;
						i = m_anstellungen.Count;
					}
			}
		}
	}
}
